#ifndef __FT_HOOK_H__
#define __FT_HOOK_H__


#include <linux/kernel.h>
#include <linux/ftrace.h>
#include <linux/init.h>

/*
 * name: 被hook函数名
 * function: 钩子函数的地址（替代被hook函数）
 * original: 指针，指向存储被hook函数地址的地址
 * address: 被hook函数地址
 * ops: ftrace服务信息
 */
struct ftrace_hook {
	const char *name;
	void *function;
	void *original;

	unsigned long address;
	struct ftrace_ops ops;
};


extern int ftrace_install_hook(struct ftrace_hook *hook);
extern void ftrace_remove_hook(struct ftrace_hook *hook);


#endif
